package com.neuedu.oop;

/**
 * @author 金山
 * 项目：javase
 * site: https://blog.fulfill.com.cn
 * 描述  演示构造函数的
 * @data 2024/10/179:00
 */
public class Dog {


    // 1 属性  实例变量  全局变量  对象的shuxing
    String name;
    int age;
    String color;


    // 2 构造方法   默认有一个 无参的构造方法  构造方法没有返回值   reutrn  不能写  void

    Dog() {
        System.out.println("无参的构造方法");
    }

    // 如果显示的声明构造方法，则编译器就不自动补全  无参的构造方法了
    // 构造方法可以重载
    Dog(String name, int age) {
        System.out.println("构造方法...");
        this.name = name;
        this.age = age;
    }

    Dog(String name, int age, String color) {
        // this();  构造方法中 只能有一个this 或者super
        this(name, age); // 本类的构造方法
        this.color = color;
        System.out.println("三个参数的构造方法");

    }


    void introduce() {
        // System.out.printf("name = %s\t age :%d\r\n" ,this.name,this.age);

        // int age = 100;// 就不变量
        System.out.printf("name = %s\t age :%d,花色,%s\n", name, age,this.color);
    }


    int sum(int numa, int numb) {

        return numa + numb;
    }


    public static void main(String[] args) {

        // Dog d1 = new Dog();
        //
        // Dog d2 = new Dog();
        // Dog d3 = d2;
        // d1.name = "欢欢";
        // d1.age = 3;
        //
        // d1.introduce();
        //
        // Dog d2 = new Dog("贝贝",2);
        // d2.introduce();


        // 匿名对象  就是用一次 这个对象


        // 匿名对象
        // System.out.println("new Dog(10,20) = " + new Dog().sum(10, 20));



        Dog d4 = new Dog("晶晶",5,"红色");
        d4.introduce();


    }


}
